from longguo_ui.base.base import BasePage
from longguo_ui.config.locators import PaymentPageLocators
import time


class PaymentPage(BasePage):
    """
    支付产品页面操作类，继承自基础页面类
    封装支付产品的添加、支付方式设置及查询等相关操作流程
    """

    def __init__(self, driver):
        """
        初始化支付产品页面实例

        :param driver: 浏览器驱动实例，用于页面交互
        """
        super().__init__(driver)

    def payment_product_information(self):
        """
        执行支付产品完整操作流程
        步骤包括：进入支付产品页面、添加产品信息、设置支付方式、查询产品信息
        """
        # 点击支付管理菜单（展开子菜单）
        self.click(PaymentPageLocators.PAYMENT_MANAGEMENT)
        time.sleep(1)  # 等待菜单展开

        # 点击进入支付产品信息页面
        self.click(PaymentPageLocators.PAYMENT_PRODUCT_INFORMATION)
        time.sleep(1)  # 等待页面加载

        # 点击添加支付产品按钮，打开添加表单
        self.click(PaymentPageLocators.ADD_PAYMENT_PRODUCT)
        time.sleep(1)  # 等待表单加载

        # 输入支付产品编号（示例编号：8848）
        self.send_keys(PaymentPageLocators.PAYMENT_PRODUCT_CODE, '8848')
        time.sleep(1)  # 等待输入完成

        # 输入支付产品名称（示例名称：菠萝手机）
        self.send_keys(PaymentPageLocators.PAYMENT_PRODUCT_NAME, '菠萝手机')
        time.sleep(1)  # 等待输入完成

        # 点击提交按钮，提交产品信息
        self.click(PaymentPageLocators.SUBMIT)
        time.sleep(1)  # 等待提交处理

        # 点击确认按钮，确认添加产品
        self.click(PaymentPageLocators.CONFIRM)
        time.sleep(1)  # 等待确认完成

        # 点击设置支付方式按钮，进入支付方式配置页面
        self.click(PaymentPageLocators.SET_PAYMENT_METHOD)
        time.sleep(1)  # 等待页面跳转

        # 点击添加设置支付方式按钮，打开支付方式表单
        self.click(PaymentPageLocators.ADD_SETTING_PAYMENT_METHOD)
        time.sleep(1)  # 等待表单加载

        # 下拉选择支付方式（WEIXIN表示微信支付）
        self.select_option_by_value(PaymentPageLocators.PAYMENT_METHOD, 'WEIXIN')
        time.sleep(1)  # 等待选择完成

        # 下拉选择支付类型（SCANPAY表示扫码支付）
        self.select_option_by_value(PaymentPageLocators.PAYMENT_TYPE, 'SCANPAY')
        time.sleep(1)  # 等待选择完成

        # 输入支付费率（示例费率：0.01，即1%）
        self.send_keys(PaymentPageLocators.PAYMENT_RATE, '0.01')
        time.sleep(1)  # 等待输入完成

        # 点击支付方式表单的提交按钮，保存配置
        self.click(PaymentPageLocators.PAYMENT_SUBMIT)
        time.sleep(3)  # 等待提交处理及页面刷新

        # 点击返回支付产品信息列表页面
        self.click(PaymentPageLocators.PAYMENT_PRODUCT)
        time.sleep(1)  # 等待页面加载

        # 在支付产品名称查询框输入名称，准备查询
        self.send_keys(PaymentPageLocators.PAYMENT_PRODUCT_NAME_INPUT, '菠萝手机')
        time.sleep(1)  # 等待输入完成

        # 点击查询按钮，查询已添加的支付产品
        self.click(PaymentPageLocators.SEARCH)
        time.sleep(5)  # 等待查询结果加载完成